package com.kx.kxpicture.service;

import com.kx.kxpicture.model.dto.space.analyze.*;
import com.kx.kxpicture.model.entity.Space;
import com.kx.kxpicture.model.entity.User;
import com.kx.kxpicture.model.vo.space.analyze.*;

import java.util.List;

/**
 * 类功能描述
 *
 * @author kuangxin
 * date 2025/9/12
 */
public interface SpaceAnalyzeService {
    /**
     * 分析全空间或公共图库的使用情况，
     * 需要编写 “仅管理员可访问” 的权限校验逻辑，并且更改查询图片表的范围；
     * 如果只是分析单个空间的使用情况，直接从空间表查询出单个空间的数据即可。
     *
     * @param spaceUsageAnalyzeRequest
     * @param loginUser
     * @return
     */
    public SpaceUsageAnalyzeResponse getSpaceUsageAnalyze(SpaceUsageAnalyzeRequest spaceUsageAnalyzeRequest, User loginUser);


    /**
     * 统计分类分析
     *
     * @param spaceCategoryAnalyzeRequest
     * @param loginUser
     * @return
     */
    public List<SpaceCategoryAnalyzeResponse> getSpaceCategoryAnalyze(SpaceCategoryAnalyzeRequest spaceCategoryAnalyzeRequest, User loginUser);

    /**
     * 统计标签
     *
     * @param spaceTagAnalyzeRequest
     * @param loginUser
     * @return
     */
    public List<SpaceTagAnalyzeResponse> getSpaceTagAnalyze(SpaceTagAnalyzeRequest spaceTagAnalyzeRequest, User loginUser);

    /**
     * 图片大小范围统计
     *
     * @param spaceSizeAnalyzeRequest
     * @param loginUser
     * @return
     */
    public List<SpaceSizeAnalyzeResponse> getSpaceSizeAnalyze(SpaceSizeAnalyzeRequest spaceSizeAnalyzeRequest, User loginUser);

    /**
     * 用户上传行为分析
     * @param spaceUserAnalyzeRequest
     * @param loginUser
     * @return
     */
    public List<SpaceUserAnalyzeResponse> getSpaceUserAnalyze(SpaceUserAnalyzeRequest spaceUserAnalyzeRequest, User loginUser);

    /**
     * 空间用户排名分析
     * @param spaceRankAnalyzeRequest
     * @param loginUser
     * @return
     */
    public List<Space> getSpaceRankAnalyze(SpaceRankAnalyzeRequest spaceRankAnalyzeRequest, User loginUser);
}
